/**
 * 
 */
package kr.co.insoft.auth.repository.members;

import kr.co.insoft.auth.model.members.JoinFormModel;
import kr.co.insoft.framework.exceptions.RepositoryException;

/**
 * @author IN-SOFT Inc. GoodwillDD(sylee@in-soft.co.kr)
 * 
 */
public interface JoinRepository {

	/**
	 * 사용자 이름의 중복 여부를 반환한다. 파라미터 체크 후, 쿼리한다.
	 * 
	 * @param username
	 * @return
	 * @throws RepositoryException
	 */
	public boolean isDuplicateUsername(String username)
			throws RepositoryException;

	/**
	 * 사용자를 등록한다. 파라미터 체크 후, 쿼리한다.
	 * 
	 * @param joinFormModel
	 * @throws RepositoryException
	 */
	public Long registMember(JoinFormModel joinFormModel)
			throws RepositoryException;

	/**
	 * 사용자 `id` 기준으로 사용자 정보를 반환한다.
	 * 
	 * @param id
	 * @return
	 * @throws RepositoryException
	 */
	public JoinFormModel getUser(Long id) throws RepositoryException;

	/**
	 * @param joinFormModel
	 */
	public void accountRevitalize(Long id) throws RepositoryException;
}
